import random

from django.shortcuts import render
from django.http import HttpResponse
from myadmin.models import Category,Shop,Product
from django.core.paginator import Paginator
from django.db.models import Q
from datetime import datetime
import hashlib,random
import time,os

def index(request,pagIndex=1):
    umod = Product.objects
    ulist = umod.filter(status__lt=9)

    mywhere = []

    #获取并判断搜索条件
    kw = request.GET.get('keyword',None)
    if kw:
        ulist = ulist.filter(name__contains=kw)
        mywhere.append('keyword='+kw)

    #获取并判断类别条件
    cid = request.GET.get('category_id',None)
    if cid:
        ulist = ulist.filter(category_id=cid)
        mywhere.append('category_id='+cid)

    #获取判断并封装status的搜索条件
    status = request.GET.get('status','')
    if status != '':
        ulist = ulist.filter(status=status)
        mywhere.append('status='+status)

    #执行分页处理
    pagIndex = int(pagIndex)
    page = Paginator(ulist,10)
    maxpages = page.num_pages

    #判断当前分页是否越界
    if pagIndex > maxpages:
        pagIndex = maxpages
    if pagIndex < 1 :
        pagIndex = 1

    list2 = page.page(pagIndex) #获取当前页数据
    plist = page.page_range #读取页码列表信息

    #遍历当前菜品分类信息并封装对应店铺信息
    for  vo in list2:
        sob = Shop.objects.get(id=vo.shop_id)
        vo.shopname = sob.name
        cob = Category.objects.get(id=vo.category_id)
        vo.categoryname = cob.name

    context ={'productlist':list2,'plist':plist,'pagIndex':pagIndex,'maxpages':maxpages,'mywhere':mywhere}
    return render(request,'myadmin/product/index.html',context)

def add(request):
    slist = Shop.objects.values('id','name')
    context = {'shoplist':slist}
    return render(request,'myadmin/product/add.html',context)

def insert(request):
    try:
        #图片的上传处理
        myfile = request.FILES.get("cover_pic",None)
        if not myfile:
            return HttpResponse("没有封面上传文件信息")
        cover_pic = str(time.time())+"."+myfile.name.split('.').pop()
        destination = open("./static/uploads/product/"+cover_pic,"wb+")
        for chunk in myfile.chunks():      # 分块写入文件
            destination.write(chunk)
        destination.close()

        ob = Product()
        ob.shop_id = request.POST['shop_id']
        ob.category_id = request.POST['category_id']
        ob.name = request.POST['name']
        ob.price = request.POST['price']
        ob.cover_pic = cover_pic
        ob.status = 1
        ob.create_at = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
        ob.update_at = datetime.now().strftime('%Y-%m-%d %H:%M:%S')

        ob.save()
        context = {'info':'添加成功！'}

    except Exception as err :
        print(err)
        context = {'info':'添加失败！'}

    return render(request,'myadmin/info.html',context)

def delete(request,pid=0):
    try:
        ob = Product.objects.get(id=pid)
        ob.status = 9
        ob.update_at = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
        ob.save()
        context = {'info':'删除成功！'}

    except Exception as err :
        print(err)
        context = {'info':'删除失败！'}
    return render(request,'myadmin/info.html',context)


def edit(request,pid=0):

    try:
        ob = Product.objects.get(id=pid)
        context = {'product':ob}
        slist = Shop.objects.values('id','name')
        context['shoplist'] = slist

        return render(request,'myadmin/product/edit.html',context)

    except Exception as err :
        print(err)
        context = {'info':'没有找到要修改的信息！'}
        return render(request,'myadmin/info.html',context)

def update(request,pid=0):

    try:
        #获取原图片
        oldpicname =request.POST['oldpicname']

        #图片的上传处理
        myfile = request.FILES.get("cover_pic",None)
        if not myfile:
            cover_pic = oldpicname
        else:
            cover_pic = str(time.time())+"."+myfile.name.split('.').pop()
            destination = open("./static/uploads/product/"+cover_pic,"wb+")
            for chunk in myfile.chunks():      # 分块写入文件
                destination.write(chunk)
            destination.close()

        ob = Product.objects.get(id=pid)
        ob.shop_id =request.POST['shop_id']
        ob.category_id =request.POST['category_id']
        ob.name = request.POST['name']
        ob.price = request.POST['price']
        ob.cover_pic = cover_pic
        ob.update_at = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
        ob.save()
        context = {'info':'修改成功!'}

        if myfile:
            os.remove("./static/uploads/product/"+oldpicname)

    except Exception as err :
        print(err)
        context = {'info':'修改失败！'}

        if myfile:
            os.remove("./static/uploads/product/"+cover_pic)

    return render(request,'myadmin/info.html',context)

